import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.util.HashSet;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JSeparator;
import java.util.Observable;
import javax.swing.JTextArea;
import java.awt.Color;
import javax.swing.JScrollPane;
import java.awt.Font;
import javax.swing.DefaultListModel;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JList;
import javax.swing.JScrollBar;
import javax.swing.ListSelectionModel;

/**
 * Fenêtre de saisie d'un exemplaire d'un ouvrage avec la vue des exemplaires
 * de l'ouvrage Code du JFrame généré par Window Builder/Swing Designer.
 * 
 * @author IUT, A.Culet
 * @version 1.0
 */
public class VueRecherche extends Vue {

	/**
	 * 
	 */

	private JPanel contentPane;

	// à ajouter car la vue est observatrice d'un ouvrage
	private Ouvrage _ouvrage;
	private final ButtonGroup buttonGroup = new ButtonGroup();
	private JTextArea textArea;
	private JButton btnRetour;
	
	DefaultListModel mo = new DefaultListModel();
	
	private JList liste_ouv = new  JList(mo);
	
	DefaultListModel mo2 = new DefaultListModel();
	
	private JList liste_art = new  JList(mo2);



	/**
	 * Create the frame.
	 */
	
	public VueRecherche(Controleur controleur, HashSet<Ouvrage> ouv,HashSet<Article> paru) {
		super(controleur);

		alimente(ouv);
		alimente2(paru);
		setTitle("Résultat de la recherche.");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 540, 461);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		btnRetour = new JButton("Retour");
		btnRetour.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueRecherche.this);
			}
		});
		btnRetour.setBounds(246, 392, 117, 29);
		contentPane.add(btnRetour);
		
		liste_ouv.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		liste_ouv.setBounds(44, 40, 451, 148);
		contentPane.add(liste_ouv);
     	liste_ouv.setModel(mo);
		JScrollPane scroll = new JScrollPane();
		scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scroll.setBounds(44, 40, 451, 148);
		scroll.setViewportView(liste_ouv);
		contentPane.add(scroll); 
		
		liste_art.setBounds(44, 224, 451, 148);
		liste_art.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		contentPane.add(liste_art);
     	liste_art.setModel(mo2);
		JScrollPane scroll2 = new JScrollPane();
		scroll2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scroll2.setBounds(44, 224, 451, 148);
		scroll2.setViewportView(liste_art);
		contentPane.add(scroll2); 
		
		JLabel lblOuvrages = new JLabel("Ouvrages");
		lblOuvrages.setBounds(232, 13, 61, 15);
		contentPane.add(lblOuvrages);
		
		JLabel lblArticles = new JLabel("Articles");
		lblArticles.setBounds(246, 200, 61, 15);
		contentPane.add(lblArticles);
		
		JButton btnConsulter = new JButton("Consulter");
		btnConsulter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Object obj=null;
				String selection;
				if (liste_ouv.getSelectedValue()== null && liste_art.getSelectedValue()== null)
				{
					Message dialog = new Message("Veuillez selectionner un ouvrage ou un article.");
					dialog.setVisible(true);					
				}
				else 
				{
					obj = liste_ouv.getSelectedValue();
					selection=obj.toString();
					String ISBN = selection.split(" ")[0];
					fermer();
					getControleur().consulterOuvrage(ISBN);

				}

				}
			}
		);
		btnConsulter.setBounds(375, 392, 120, 29);
		contentPane.add(btnConsulter);
	}

	
	public void fermer()
	{
		this.dispose();
	}
	/**
	 * alimentation des composants d'affichage en consultant directement
	 * l'ouvrage
	 */
	
	public void alimente(HashSet<Ouvrage> ouv) {
		
		for(Ouvrage o : ouv)
			{
			mo.addElement(o.getIsbn()+"                 "+o.getTitre());
			}
	}
	
	public void alimente2(HashSet<Article> art) {
		
		for(Article a : art)
			{
			Parution paru = a.get_parution();

			mo2.addElement(paru.get_IdParution()+"            "+a.get_titre());
			}
	}
}
